package com.cloudkinto.service.ob;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cloudkinto.common.web.PageResult;
import com.cloudkinto.common.web.SingleResult;
import com.cloudkinto.entity.OperateBillDo;
import com.cloudkinto.entity.OperateBillRuleConditionDo;
import com.cloudkinto.entity.OperateBillRuleDo;
import com.cloudkinto.vo.ft.FreightStatusUpdateReq;
import com.cloudkinto.vo.ob.OperateBillAddReq;
import com.cloudkinto.vo.ob.OperateBillDetailRes;
import com.cloudkinto.vo.ob.OperateBillPageVo;
import com.cloudkinto.vo.ob.OperateBillUpdateReq;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 操作费 service接口
 * </p>
 *
 * @author hua
 * @since 2024-11-13
 */
public interface OperateBillService extends IService<OperateBillDo> {

    SingleResult addInit();

    Object add(OperateBillAddReq req, Long userId, Long tenantId);

    SingleResult updateInit(Long id);

    Object update(OperateBillUpdateReq updateVo, Long userId, Long tenantId);

    int delete(Long id, Long userId, Long tenantId);

    OperateBillDetailRes detail(Long id);

    SingleResult pageInit();

    List<OperateBillPageVo> getList(Map<String, Object> map);

    PageResult getListPage(Map<String, Object> map);

    void updateStatus(FreightStatusUpdateReq req, Long userId, Long tenantId);

    Map<Long, String> getRuleExplainMap(List<OperateBillRuleDo> ruleDos, Map<Long, List<OperateBillRuleConditionDo>> conditonMap, String currencyCode);

}
